iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 23
2

哈嘍,大家好

今天要來筆記 git merge 解決衝突

為什麼會有衝突呢?

假如我們 火箭隊 有一個專案,當我在分支上 coding 的時候,已經有夥伴在主要分支(master)上進行 commit 了,那就有可能程式碼都剛好寫在同一支檔案上,而檔案的某一行就剛好碰到惹~

這時候該怎麼辦呢?


在開始之前,我們重新複習以前的指令吧(((o(゚▽゚)o)))

前面的錢字號($)代表 command line 開始,真正在打的時候不用加入$窩~

$ mkdir project  //建立新資料夾
$ cd project  //進入資料夾
$ git init  //建立數據庫
$ touch index.html  //新增檔案
$ git add .  //加入索引(暫存區)
git commit -m "修改紀錄"  //提交 commit

圖示:
Git 提交流程

再來,新增一個分支

$ git branch 分支名稱

圖示:
git branch 分支名稱 圖示

我在 html 裡面新增 all.cssh1標籤
html 裡面新增 all.css 與 h1標籤

然後,我們把 aaa 加入索引並且 commit

之後使用 git checkout 回到 master

$ git checkout master

master 上,我再去新增一個 h1標籤
【Git與GitHub】git merge  解決衝突

當我們新增完後,可以使用 git status 去查詢檔案狀態喲!
然後我們做加入索引並且 commit 的動作。

接著,重頭戲來惹,我們要合併嚕!

使用 git merge 分支名稱
git merge 分支名稱 合併分支
--Oops!無法合併(我們看 Git 給我們的提示說發生衝突惹,要我們去解決它後,才能 commit)

再打開 index.html 看看發生什麼事
【Git與GitHub】git merge  解決衝突
--他會跟你說有兩個東西重複了喇~你要留哪一個

那我們當然是留充滿愛der Hello World 呀!那麼就把厭世D Hell World 刪掉吧!
【Git與GitHub】git merge  解決衝突

然後,很重要哦!
修改完成後,要記得加入索引再 commit 哦! 不確定檔案狀態怎麼樣的話可以用 git status 去查詢喲
【Git與GitHub】git merge  解決衝突

另外, Sourcetree 會長這樣。
【Git與GitHub】git merge  解決衝突

跟我的這張示意圖 484 長得 87 像 R :.゚ヽ(*´∀`)ノ゚.:。
【Git與GitHub】git merge  解決衝突


/補充說明/

今天實驗了一下,用一個 commit 裡開了兩個分支,並把兩個分支都做了 commit 的動作,接著合併兩個分支會發生什麼事。
這裡決定用 Sourcetree 來實驗:)

示意圖大概是長這樣
【Git與GitHub】git merge
--在畫這張圖的時候好像被打到一直撞牆,然後觀念都錯了

之後我發現錯誤在於,我把分支化成圈圈,但其實圈圈的出現是有做 commit 的時候才會有的,再去看其他大神的文章,形容 分支 就像 貼紙 那樣

Sourcetree 長這樣
git merge 兩個分支

我的 HEAD 會在 bbb 的分支上。
我這裡的問題是如果我的 master 要合併 那兩個分支的合併時該怎做(因為不知道分支名字),不過後來知道了,要看是從哪裡合併出去,再後來使用 git branch 就可以知道 HEAD 在哪了辣! 講得好複雜,看 Sourcetree 就會比較知道了。
git merge
--成功合併了:)


合併過的分支可刪可不刪喲~

不刪的緣故是除了留著看以前紀錄用,更重要的是分支很便宜喇(只要 40 個字元大小)


上一篇
Day22【Git與GitHub】git merge 自動合併
下一篇
Day24【Git與GitHub】git tag 把你貼標籤:)
系列文
Git與Github-30天學習歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言